// file: chapter5/demo5_9.c
// 为了演示在很大的素数上的处理效果，所有整数用long型表示（与教材不同）。
#include <stdio.h>
int main(void)
{
    long lN = 0;
    long lX = 0;
    printf("n=?\n"); // 提示用户输入n
    // 用scanf()输入long型数，需要用%ld格式
    scanf("%ld", &lN);
    if (lN <= 3)
    {
        // 对输入数据的正确性进行判断, 如果输入数据不正确，应该提醒用户！
        printf("输入的n应该大于3\n");
    }
    else
    {
        // 用for循环从2尝试到n-1，控制循环的计数器变量是lX
        for(lX = 2; lX <= lN - 1; lX++)
        {
            if ((lN % lX) == 0)
            {
                // lN可以被lX整除，说明lN不是素数
                printf("  log: %ld %% %ld == 0\n", lN, lX);
                break; // 提前结束整个循环
            }
        }
        // 根据lX取值判断循环是否被break提前结束
        if (lX == lN)
        {
            // 没有提前结束
            printf("%ld is a prime.\n", lN);
        }
        else
        {
            // 被break提前结束了
            printf("%ld is not a prime.\n", lN);
        }
    }
    return 0;
}